#include<iostream>
#include<algorithm>
#include<cstring>


//IDA*
using namespace std;

const int N = 20;

int n;
int q[N];
int w[5][N];


bool check(){
    for (int i = 0; i + 1 < n; i ++){
        if(q[i + 1] != q[i] + 1){
            return false;
        }
    }
    return true;
}


int f(){
    int tot = 0;
    for (int i = 0; i + 1 < n; i ++){
        if(q[i + 1] != q[i] + 1){
            tot++;
        }
    }

    return (tot + 2) / 3;
}

bool dfs(int u, int max_depth){
    if(u + f() > max_depth){
        return false;
    }

    if(check()){
        return true;
    }

    memcpy(w[u], q, sizeof q);
    for (int len = 1; len < n; len ++){
        for (int l = 0; l + len - 1 < n; l ++){
            int r = l + len - 1;

            for (int k = r + 1; k < n; k ++){

                
                int y = l;
                for (int x = r + 1; x <= k; x ++, y ++){
                    q[y] = w[u][x];
                }
                for (int x = l; x <= r; x ++, y ++){
                    q[y] = w[u][x];
                }
                if(dfs(u + 1, max_depth)){
                    return true;
                }
                memcpy(q, w[u], sizeof q);
            }
        }
    }

    return false;
}

int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    int T;
    cin >> T;
    while(T--){
        cin >> n;
        for (int i = 0; i < n; i ++){
            cin >> q[i];
        }

        int depth = 0;
        while(depth < 5 && !dfs(0, depth)){
            depth++;
        }

        if(depth >= 5){
            cout << "5 or more" << endl;
        }else{
            cout << depth << endl;
        }
    }
}